// 柯里化
// 一个需求需要传入多个参数，但是有一些参数是需要*复用*的
// 可以使用柯里化函数，创建一个函数，传入复用的参数，返回一个函数，返回的函数传入剩余参数
// 柯里化之后的函数，参数可以一次性传也可以分开传

// 需求：年龄与一个基准值比较大小

/*
 * 写法0：一般的纯函数
 * 一般程序中的基准值很少改变，这样多次调方法的时候 mini就重复使用了
 */
function checkAge(mini, age) {
  return age > mini;
}

/*
 * 写法1：硬编码
 * 基准值写死了
 */
function checkAge(age) {
  const mini = 18;
  return age > mini;
}

/*
 * 写法2：柯里化
 * 某个需求有多个参数的时候，可以创建一个函数接收部分参数，让这个函数返回的函数接收剩余参数
 */
function checkAge(mini) {
  return function (age) {
    return age > mini;
  };
}

/*
 * 写法2：柯里化
 * ES6写法
 */
const checkAge = (mini) => (age) => age > mini;
